import re


def clean_text(text):
    """
    使用正则表达式清洗文本：
    1. 保留中文字符、数字和常见标点符号。
    2. 去掉所有 < > 及其中包含的网址。
    """
    # 去掉 < > 及其中的内容
    text = re.sub(r"<.*?>", "", text)

    # 保留中文字符、数字和常见标点符号
    pattern = r"[^\u4e00-\u9fa5，。！？；：“”‘’（）【】《》、0-9]"
    cleaned_text = re.sub(pattern, '', text)

    return cleaned_text


# 文件路径
input_file = "news_titles.txt"  # 输入文件
output_file = "cleaned_news_titles.txt"  # 输出文件

# 打开文件进行读取和清洗
with open(input_file, 'r', encoding='utf-8') as infile, open(output_file, 'w', encoding='utf-8') as outfile:
    for line in infile.readlines():
        # 去掉两端空白字符
        if not line:
            continue  # 跳过空行

        # 分割标题和类别数字
        try:
            title, category = line.rsplit(' ', 1)  # 从右侧分割一次
            category = int(category)
            cleaned_title = clean_text(title)  # 清洗标题
            # 写入新的文件，保留原有格式
            outfile.write(f"{cleaned_title} {category}\n")
        except ValueError:
            print(f"跳过无效行: {line}")  # 打印提示信息，帮助排查格式错误的行

print(f"清洗完成，新文件已保存为: {output_file}")
